package com.km.team.phsystem.service;

import com.km.team.phsystem.beans.pojo.TimeSlotPhConfig;
import com.km.team.phsystem.beans.vo.TimeSlotVo;

import java.util.Date;
import java.util.List;

/**
 * @author ：Riven.
 * @description：每个业务办理时段及数量管理
 * @date ：2018/11/30
 */
public interface TimeSlotPhConfigService {
    /**
     * 获取某个业务的受理时间段列表
     *
     * @param businessId 业务ID
     * @return 某个业务的受理时间段列表
     */
    List<TimeSlotPhConfig> getTimeSlotInfoForBusiness(Integer businessId);

    /**
     * 前端关于某个业务受理业务时段列表的保存工作，有一下几种情况：
     * 只有数据被修改
     * 只有数据被删除
     * 只有数据新增
     * 有数据修改（删除也属于数据修改）和新增
     * 无论什么情况，都需要维护日期-时间对象，{@link com.km.team.phsystem.beans.pojo.DateTimeSlotPhConfig}，
     * <p>
     * 若该业务类型每天受理的时段或者数量被修改，
     * 则同时需要维护日期对象，{@link com.km.team.phsystem.beans.pojo.DatePhConfig}
     *  @param dataList   需要进行处理的数据
     * @param businessId 业务ID
     * @param taaNo
     */
    void instOrUpdateTimeSlot(List<TimeSlotPhConfig> dataList, Integer businessId, Integer taaNo);


    /**
     * 根据业务ID删除所有该数据的日期信息
     *
     * @param businessId 业务ID
     */
    void deleteForBusiness(Integer businessId);


    /**
     * 根据ID获取数据
     */
    TimeSlotPhConfig getDataForKey(Integer key);

    /**
     * 根据ID列表对应的数据
     * @param idList ID列表
     * @return
     */
    List<TimeSlotPhConfig> selectForIdList(List<Integer> idList);


    Integer getAcceptancesNumForBusinessId(Integer businessId);

    TimeSlotVo getEnableTimeSlotListForBusinessId(Integer businessId, Date date);

    /**
     * 获取列表时段的受理数量
     * @param timeSlotId
     * @return
     */
    Integer getAcceptancesNumForBusinessIdAndTimeSlotId(String timeSlotId);
}
